/**
 * Define a advancement.
 */
class Advancement {
  constructor(
    /**
     * Id of the advancement.
     */
    readonly id: string,
    public options: AdvancementOption
  ) {}
}

/**
 * Define a in-game advancement system.
 *
 * **It is works in progress.**
 *
 * @alpha
 */
class AdvancementSystem {
  constructor() {}
}

interface AdvancementAward {
  experience: number;
  function: string;
  recipes: string;
}

interface AdvancementOption {
  criteria: CriteriaTriggers;
  award: AdvancementAward;
  requirements: Advancement[];
}

enum CriteriaTriggers{
    ItemOnUse = "ItemOnUse"
}

class ItemOnUse{

}
